package com.itheima.springbootwebtlias.controller;

import com.itheima.springbootwebtlias.pojo.*;
import com.itheima.springbootwebtlias.service.StudentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RequestMapping("/students")
@RestController
public class StudentController {

    @Autowired
    private StudentService studentService;

    //学员列表查询
    @GetMapping
    public Result page(StudentQueryParam queryParam) {
        //1.接收请求参数：kv格式
        log.info("查询学员列表，请求参数：{}", queryParam);

        //2.调用业务层查询学员列表
        PageResult pageResult = studentService.page(queryParam);

        return Result.success(pageResult);
    }

    //查询所有学员
    @GetMapping("list")
    public Result QueryAll() {
        //1.调用业务层Service的功能方法，查询所有员工
        List<Student> students = studentService.selectAll();
        log.info("查询所有员工，查询完毕：{}",students);

        //2.封装响应结果
        return Result.success(students);
    }

    //新增学员
    @PostMapping
    public Result save(@RequestBody Student student) {
        //1.接收请求参数 ：json(请求体中)
        log.info("添加员工，请求参数：{}", student);

        //2.调用业务层Service的功能方法，添加员工
        studentService.saveStudent(student);
        log.info("添加员工，添加完毕");

        return Result.success();
    }

    //删除学员
    @DeleteMapping("/{ids}")
    public Result remove(@PathVariable List<Integer> ids) {
        //1.接收请求参数：url地址中
        log.info("删除员工，请求参数：{}", ids);

        //2.调用业务层Service的功能方法，删除员工
        studentService.removeBatch(ids);
        log.info("删除员工，删除完毕");

        return Result.success();
    }

    //修改学员
    @PutMapping
    public Result update(@RequestBody Student student) {
        //1.接收请求参数：json(请求体中)
        log.info("修改员工，请求参数：{}", student);

        //2.调用业务层Service的功能方法，修改员工
        studentService.update(student);
        log.info("修改员工，修改完毕");

        return Result.success();
    }

    //根据id查询员工信息
    @GetMapping("/{id}")
    public Result queryById(@PathVariable Integer id) {
        //1.接收请求参数：url地址中
        log.info("根据id查询员工信息，请求参数：{}", id);

        //2.调用业务层Service的功能方法，查询员工信息
        Student student = studentService.queryById(id);
        log.info("根据id查询员工信息，查询完毕：{}", student);

        //3.封装响应结果
        return Result.success(student);
    }

    //违纪处理
    @PutMapping("/violation/{id}/{score}")
    public Result violation(@PathVariable Integer id, @PathVariable Integer score) {
        //1.接收请求参数：url地址中
        log.info("违纪处理，请求参数：{},{}", id, score);

        //2.调用业务层Service的功能方法，违纪处理
        studentService.violation(id, score);
        log.info("违纪处理，处理完毕");

        return Result.success();
    }







}
